return {
  "mfussenegger/nvim-lint",
  dependencies = {
    {
      "williamboman/mason.nvim",
      optional = true,
      opts = {
        ensure_installed = {
          "codespell",
        },
      },
      opts_extend = { "ensure_installed" },
    },
  },
  event = { "BufWritePost", "BufReadPre", "TextChanged", "BufEnter" },
  enabled = true,
  config = function()
    require("lint").linters_by_ft = {
      lua = { "luacheck" }, -- lua lint vim 比如提示

      javascript = { "eslint" },
      javascriptreact = { "eslint" },
      typescript = { "eslint" },
      typescriptreact = { "eslint" },
      svelte = { "eslint" },

      -- javascript = { "eslint_d" },
      -- javascriptreact = { "eslint_d" },
      -- typescript = { "eslint_d" },
      -- typescriptreact = { "eslint_d" },
      -- svelte = { "eslint_d" },

      python = { "pylint" },
      markdown = { "markdownlint" },
    }

    local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
    -- { "BufEnter", "BufWritePost", "InsertLeave", "TextChanged", "BufReadPre" }
    vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "TextChanged", "InsertLeave" }, {
      group = lint_augroup,
      callback = function()
        require("lint").try_lint()
        require("lint").try_lint "codespell"
      end,
    })

    vim.keymap.set("n", "<leader>ll", function()
      require("lint").try_lint()
    end, { desc = "Trigger linting for current file" })
  end,
}
